<?
include_once("DadosBanco.php");
include_once("Banco.php");
include_once("Tabela.php");
include_once("Campo.php");
class ControleBanco{
	private $dadosBanco;
	private $conexao;

	public function __construct($dadosBanco = null){
		 $this->dadosBanco = $dadosBanco;
	}

	public function conectar(){
		$this->conexao = mysql_pconnect($this->dadosBanco->getHost(), $this->dadosBanco->getUsuario(), $this->dadosBanco->getSenha());

		if(!$this->conexao){
			return false;
		}else{
			if($this->dadosBanco->getBanco() != ""){
				if($this->selecionarBanco()){
				    return true;
				}else{
                	return false;
				}
			}else{
		    	return true;
			}
		}
	}

	public function selecionarBanco(){
		if(mysql_select_db($this->dadosBanco->getBanco(), $this->conexao)){
			return true;
		}else{
			return false;
		}
	}

	public function listarBancos(){
		$sql = "show databases";
		$resultado = mysql_query($sql, $this->conexao);
		while($linha = mysql_fetch_array($resultado)){
			$retorno[] = new Banco($linha["Database"]);
		}
		return $retorno;
	}

	public function listarTabelas(){
		$sql = "show tables";
		$resultado = mysql_query($sql, $this->conexao);
		$indice = "Tables_in_".$this->dadosBanco->getBanco();
		while($linha = mysql_fetch_array($resultado)){
			$retorno[] = new Tabela($linha[$indice]);
		}
		return $retorno;
	}

	public function listarCampos($tabela = ""){
		$sql = "show fields from ".$tabela;
		$resultado = mysql_query($sql, $this->conexao);
	
		while($linha = mysql_fetch_array($resultado)){
			$retorno[] = new Campo($linha["Field"], $linha["Type"], $linha["Key"], $linha["Default"], $linha["Extra"]);
		}
		return $retorno;	
	}
	
	// Retorna o numero de linhas afetadas. Deve ser usado com INSERT, UPDATE, DELETE
	public function executar($sql){
    	return mysql_query($sql);
	}
	
}
?>